package cc.rengu.igas.bomp.common.dao;

import cc.rengu.igas.bomp.common.entity.RegionInfo;
import cc.rengu.oltp.utility.bean.PageInfo;
import cc.rengu.oltp.utility.bean.PageResult;

import java.util.List;

/**
 * 行政区划代码表操作接口类
 * Created by 王成 on 2020/3/10
 */
public interface RegionInfoMapper {
    /**
     * 登记行政区划代码信息表
     *
     * @param regionInfo 行政区划代码信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int insertRegionInfo(RegionInfo regionInfo) throws Exception;

    /**
     * 更新行政区划代码信息表
     *
     * @param regionInfo 行政区划代码信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateRegionInfoById(RegionInfo regionInfo) throws Exception;

    /**
     * 根据非业务主键查询行政区划代码信息
     *
     * @param id 非业务主键
     * @return 行政区划代码信息
     * @throws Exception 异常
     */
    RegionInfo selectRegionInfoById(String id) throws Exception;

    /**
     * 根据业务主键查询行政区划代码信息
     *
     * @param regionCode 行政区划代码
     * @return 行政区划代码信息
     * @throws Exception 异常
     */
    RegionInfo selectRegionInfoByPrimaryKey(String regionCode) throws Exception;

    /**
     * 根据多法人标识查询行政区划代码信息
     *
     * @param parentRegionCode 上级行政区划代码
     * @return 行政区划代码信息
     * @throws Exception 异常
     */
    List<RegionInfo> selectRegionInfoByParentRegionCode(String parentRegionCode) throws Exception;

    /**
     * 根据条件查询行政区划代码信息
     *
     * @param parentRegionCode 上级行政区划代码
     * @param regionLevel      行政级别
     * @param regionName       行政区划名称
     * @return 行政区划代码信息
     * @throws Exception 异常
     */
    List<RegionInfo> selectRegionInfoListByCondition(String parentRegionCode, String regionLevel, String regionName) throws Exception;


    /**
     * 根据条件查询行政区划代码信息
     *
     * @param parentRegionCode 上级行政区划代码
     * @param regionLevel      行政级别
     * @param regionName       行政区划名称
     * @return 行政区划代码信息
     * @throws Exception 异常
     */
    PageResult selectRegionInfoPageListByCondition(String parentRegionCode, String regionLevel, String regionName, PageInfo pageInfo) throws Exception;

}
